<?php
declare(strict_types=1);

namespace Zyucv7\Core\Error\Handler;

use Zyucv7\Core\Error\IHandler;
use Zyucv7\Core\Error\Log AS ErrorLog;

/**
 * @description 错误处理实现类
 * @package Zyucv7\Core\Error
 */
class Exception implements IHandler
{
    /**
     * @description 错误处理
     * @param \Throwable $e
     */
    public function handle(\Throwable $exception): void {

        // $logData = [
        //     'timestamp' => date('Y-m-d H:i:s'),
        //     'type' => 'EXCEPTION',
        //     'class' => get_class($exception),
        //     'message' => $exception->getMessage(),
        //     'file' => $exception->getFile(),
        //     'line' => $exception->getLine(),
        //     'trace' => $exception->getTraceAsString()
        // ];
        $logData = [
            'timestamp' => time(),
            'message' => $exception->getMessage(),
            'file' => $exception->getFile(),
            'line' => $exception->getLine(),
        ];
        
        ErrorLog::exception($logData);

        exit(1);
    }

    /**
     * @description 注册错误处理
     * @param \Throwable $e
     */
    public function register(): void
    {
        // 设置错误处理器
        set_exception_handler([$this, 'handle']);
    }
}
